<script>
    let a = 10
    if (1) {

        let a = 0

    }
    /*
        ES6 新增了块级作用域 块级作用域由{}包括，if语句和fou语句中的{} 也属于块级作用域
        一、let 
            let  没有声明提前
            let  不能重复声明
            let  块级作用域
            let  暂时性死区
        二、const  
            常量的值 只要定义好就无法修改   
            如果常量的值是引用数据类型，直接修改常量的值会报错
            修改引用数据类型常量的莫一项不会报错
            声明之后必须赋值，否则会报错
    注意：
        ES6 和 ES5 不用混合使用 
    */
    const as = 0;
    // 常量的值 只要定义好就无法修改
    // a = 20//Identifier 'a' has already been declared
    const obj = {
        b: 1,
        c:20
    }
    //如果常量的值是引用数据类型，直接修改常量的值会报错
    // obj={ // Assignment to constant variable.at
    //     b:20,
    //     c:44
    // };
    //   修改引用数据类型常量的莫一项不会报错
    obj.b = 40
    console.log(obj);
    // 声明之后必须赋值，否则会报错
    //const num;//Missing initializer in const declaration
</script>